package com.xu.mybatis.fristmybatis;

import com.xu.mybatis.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;

/**
 * Created by xu on 2017/2/28.
 */
public class MybatisFrist {
    @Test
    //返回单个对象
    public void findUserByIdTest() throws  IOException{
        //mybatis配置文件
        String resource="SqlMapConfig.xml";
        //得到配置文件的流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //创建会话工厂,传入mybatis的配置文件信息
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //通过SqlSession 操作数据库
        //第一个参数是,映射文件中的statement的id,等于=namespace+"."+statement的id
        //第二个参数是,指定和映射文件中所匹配的parameterType类型的参数
        //sqlSession.selectOne结果是与映射文件中所匹配的resultType类型的对象
        //selectOne表示返回一条记录
        User user=sqlSession.selectOne("test.findUserById",113);
        System.out.println(user);
        sqlSession.close();
    }



    @Test
    //返回多个对象
    public void findUserByNameTest() throws  IOException{
        //mybatis配置文件
        String resource="SqlMapConfig.xml";
        //得到配置文件的流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //创建会话工厂,传入mybatis的配置文件信息
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //通过SqlSession 操作数据库
        //第一个参数是,映射文件中的statement的id,等于=namespace+"."+statement的id
        //第二个参数是,指定和映射文件中所匹配的parameterType类型的参数
        //sqlSession.selectOne结果是与映射文件中所匹配的resultType类型的对象
        //selectList表示返回多条记录
        //两种方式
        //List<User> list=sqlSession.selectList("test.findUserByName","%李%");
        List<User> list=sqlSession.selectList("test.findUserByName2","李");
        System.out.println(list);
        sqlSession.close();
    }
    @Test
    //添加用户信息
    public void addUser()throws IOException
    {
        //mybatis配置文件
        String resource="SqlMapConfig.xml";
        //得到配置文件的流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //创建会话工厂,传入mybatis的配置文件信息
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        User user = new User();
        user.setUser_auth(4);
        user.setUser_name("张三");
        user.setUser_phone("123123");
        user.setUser_pwd("123123");
        user.setUser_regtime(new Date());
        user.setUser_sex(1);
        sqlSession.insert("test.addUser",user);
        sqlSession.commit();
        sqlSession.close();
        System.out.println(user);
    }
    @Test
    //删除用户信息
    public void deleteUser()throws IOException
    {
        //mybatis配置文件
        String resource="SqlMapConfig.xml";
        //得到配置文件的流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //创建会话工厂,传入mybatis的配置文件信息
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        sqlSession.delete("test.deleteUser",1333);
        sqlSession.commit();
        sqlSession.close();
    }
    @Test
    //添加用户信息
    public void updateUser()throws IOException
    {
        //mybatis配置文件
        String resource="SqlMapConfig.xml";
        //得到配置文件的流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //创建会话工厂,传入mybatis的配置文件信息
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        User user = new User();
        user.setId(1233);
        user.setUser_auth(4);
        user.setUser_name("张三");
        user.setUser_phone("123123");
        user.setUser_pwd("123123");
        user.setUser_regtime(new Date());
        user.setUser_sex(1);
        int x= sqlSession.update("test.updateUser",user);
        sqlSession.commit();
        sqlSession.close();
        System.out.println(x);
    }
}
